package com.xuebank.nfe.nfecar.model

import android.os.Parcel
import android.os.Parcelable
import com.xuebank.nfe.nfecar.entity.LocalMedia

/**
 * Created by admin Mr.WANG 2019/1/7.
 * 直接发布和草稿 接口model
 */
class UploadDataModel(var content: String?=null,
                      var type: Int?=null,
                      var blogMultimediaList: MutableList<BlogMultimediaList>? =ArrayList()) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readString(),
            parcel.readInt(),
            parcel.createTypedArrayList(BlogMultimediaList)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(content)
        parcel.writeInt(type?:0)
        parcel.writeTypedList(blogMultimediaList)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<UploadDataModel> {
        override fun createFromParcel(parcel: Parcel): UploadDataModel {
            return UploadDataModel(parcel)
        }

        override fun newArray(size: Int): Array<UploadDataModel?> {
            return arrayOfNulls(size)
        }
    }

}

class BlogMultimediaList(var url: String?=null,
                         var sort: Int?=null,
                         var tagList: MutableList<TagList>? = ArrayList()) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readString(),
            parcel.readInt(),
            parcel.createTypedArrayList(TagList)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(url)
        parcel.writeInt(sort?:0)
        parcel.writeTypedList(tagList)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<BlogMultimediaList> {
        override fun createFromParcel(parcel: Parcel): BlogMultimediaList {
            return BlogMultimediaList(parcel)
        }

        override fun newArray(size: Int): Array<BlogMultimediaList?> {
            return arrayOfNulls(size)
        }
    }

}

class TagList(var tagId: Int?=null,
              var positionX: Float?=null,
              var positionY: Float?=null,
              var direction: String?=null,
              var type: Int?=null) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readInt(),
            parcel.readFloat(),
            parcel.readFloat(),
            parcel.readString(),
            parcel.readInt()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(tagId?:0)
        parcel.writeFloat(positionX?:0f)
        parcel.writeFloat(positionY?:0f)
        parcel.writeString(direction)
        parcel.writeInt(type?:0)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<TagList> {
        override fun createFromParcel(parcel: Parcel): TagList {
            return TagList(parcel)
        }

        override fun newArray(size: Int): Array<TagList?> {
            return arrayOfNulls(size)
        }
    }

}

class Images( var images:List<LocalMedia>? =ArrayList()):Parcelable{
    constructor(parcel: Parcel) : this(parcel.createTypedArrayList(LocalMedia.CREATOR)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeTypedList(images)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<Images> {
        override fun createFromParcel(parcel: Parcel): Images {
            return Images(parcel)
        }

        override fun newArray(size: Int): Array<Images?> {
            return arrayOfNulls(size)
        }
    }

}
class uploadImageI(var i:Int):Parcelable {
    constructor(parcel: Parcel) : this(parcel.readInt()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(i)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<uploadImageI> {
        override fun createFromParcel(parcel: Parcel): uploadImageI {
            return uploadImageI(parcel)
        }

        override fun newArray(size: Int): Array<uploadImageI?> {
            return arrayOfNulls(size)
        }
    }
}



class UploadDataModels(var id:Int?=0,
        var content: String?=null,
                      var type: Int?=null,
                      var blogMultimediaList: MutableList<BlogMultimediaList>? =ArrayList()) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readInt(),
            parcel.readString(),
            parcel.readInt(),
            parcel.createTypedArrayList(BlogMultimediaList)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(id?:0)
        parcel.writeString(content)
        parcel.writeInt(type?:0)
        parcel.writeTypedList(blogMultimediaList)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<UploadDataModel> {
        override fun createFromParcel(parcel: Parcel): UploadDataModel {
            return UploadDataModel(parcel)
        }

        override fun newArray(size: Int): Array<UploadDataModel?> {
            return arrayOfNulls(size)
        }
    }

}




class UploadDataModelss(var id:Int?=0,
                        var blogId:Int?=0,
                       var content: String?=null,
                       var type: Int?=null,
                       var blogMultimediaList: MutableList<BlogMultimediaList>? =ArrayList()) : Parcelable {
    constructor(parcel: Parcel) : this(
            parcel.readInt(),
            parcel.readInt(),

            parcel.readString(),
            parcel.readInt(),
            parcel.createTypedArrayList(BlogMultimediaList)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(id?:0)
        parcel.writeInt(blogId?:0)
        parcel.writeString(content)
        parcel.writeInt(type?:0)
        parcel.writeTypedList(blogMultimediaList)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<UploadDataModel> {
        override fun createFromParcel(parcel: Parcel): UploadDataModel {
            return UploadDataModel(parcel)
        }

        override fun newArray(size: Int): Array<UploadDataModel?> {
            return arrayOfNulls(size)
        }
    }

}

class RefreshHtml( var refresh: Boolean?=true):Parcelable {
    constructor(parcel: Parcel) : this(parcel.readValue(Boolean::class.java.classLoader) as? Boolean) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeValue(refresh)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<RefreshHtml> {
        override fun createFromParcel(parcel: Parcel): RefreshHtml {
            return RefreshHtml(parcel)
        }

        override fun newArray(size: Int): Array<RefreshHtml?> {
            return arrayOfNulls(size)
        }
    }
}


